package com.haotian.json.format;

/**
 * @ClassName: JsonFormat
 * @author: 张朋
 * @date: 2016年11月10日 下午5:53:43
 */
public class JsonFormat {
	
	/**
	 * 格式化 json 字符串
	 * @param text json文本
	 * @return String   格式化后的文本
	 */
	public static String format(String text) {
		if (null == text || "".equals(text))
			return "";
		StringBuilder sb = new StringBuilder();
		char last = '\0';
		char current = '\0';
		int indent = 0;
		for (int i = 0; i < text.length(); i++) {
			last = current;
			current = text.charAt(i);
			switch (current) {
			case '{':
			case '[':
				sb.append(current);
				sb.append('\n');
				indent++;
				addIndentBlank(sb, indent);
				break;
			case '}':
			case ']':
				sb.append('\n');
				indent--;
				addIndentBlank(sb, indent);
				sb.append(current);
				break;
			case ',':
				sb.append(current);
				if (last != '\\') {
					sb.append('\n');
					addIndentBlank(sb, indent);
				}
				break;
			default:
				sb.append(current);
			}
		}

		return sb.toString();
	}

	private static void addIndentBlank(StringBuilder sb, int indent) {
		for (int i = 0; i < indent; i++) {
			sb.append('\t');
		}
	}
}
